home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / answrbok / 4_6.lha / 4_6 / 4_6test.c < prev    next >
C/C++ Source or Header  |  1993-08-08  |  2KB  |  92 lines

  1. * Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */
  2. * The C++ Answer Book */
  3. * Tony Hansen */
  4. * All rights reserved. */
  5. xtern int randints[];
  6. include <stream.h>
  7. include <memory.h>
  8. include "timen.h"
  9.  
  10. nt compar(const void *va, const void *vb)
  11.  
  12.    const int *a = (int*)va, *b = (int*)vb;
  13.    if (*a == *b)
  14. return 0;
  15.    else if (*a < *b)
  16. return -1;
  17.    else
  18. return 1;
  19.  
  20.  
  21. ifdef __cplusplus
  22. extern "C"
  23. endif
  24. oid qsort (void *, unsigned, unsigned, int (*)(const void*,const void*));
  25. oid qsort1(void *, unsigned, unsigned, int (*)(const void*,const void*));
  26. oid qsort2(void *, unsigned, unsigned, int (*)(const void*,const void*));
  27. oid qsort3(void *, unsigned, unsigned, int (*)(const void*,const void*));
  28.  
  29. nt printing = 0;
  30.  
  31. oid prarray(register int *nr, register long n)
  32.  
  33.    if (printing & 1)
  34. for (register long i = 0; i < n; i++)
  35.     cout << "nr[" << i << "] = " << nr[i] << "\n";
  36.  
  37.  
  38. oid verify(register int *nr, register long n)
  39.  
  40.    prarray(nr, n);
  41.    n--;
  42.    for (register long i = 0, j = 1; i < n; i++, j++)
  43. if (nr[i] > nr[j])
  44.     {
  45.     cout << "FAILED n = " << ++n << "\n";
  46.     return;
  47.     }
  48.    cout << "SUCCEEDED n = " << ++n << "\n";
  49.  
  50.  
  51. ain(int argc, char **argv)
  52.  
  53.    if (argc > 1)
  54. printing = atoi(argv[1]);
  55.  
  56.    int nrandints[10000];
  57.  
  58.    // for (long i = 100; i <= 10000; i *= 10)
  59.    for (long i = 10; i <= 10000; i *= 10)
  60. {
  61. memcpy((char*)nrandints, (char*)randints, (int)i * sizeof(int));
  62. prarray(nrandints, i);
  63. time0();
  64. qsort1(nrandints, (int)i, sizeof(int), compar);
  65. time1("qsort1");
  66. verify(nrandints, i);
  67.  
  68. memcpy((char*)nrandints, (char*)randints, (int)i * sizeof(int));
  69. prarray(nrandints, i);
  70. time0();
  71. qsort2(nrandints, (int)i, sizeof(int), compar);
  72. time1("qsort2");
  73. verify(nrandints, i);
  74.  
  75. memcpy((char*)nrandints, (char*)randints, (int)i * sizeof(int));
  76. prarray(nrandints, i);
  77. time0();
  78. qsort3(nrandints, (int)i, sizeof(int), compar);
  79. time1("qsort3");
  80. verify(nrandints, i);
  81.  
  82. memcpy((char*)nrandints, (char*)randints, (int)i * sizeof(int));
  83. prarray(nrandints, i);
  84. time0();
  85. qsort(nrandints, (int)i, sizeof(int), compar);
  86. time1("qsortS");
  87. verify(nrandints, i);
  88. }
  89.  
  90.    return 0;
  91.  
  92.